﻿namespace USElections.Model
{
    using System;

    /// <summary>
    /// Candidate class.
    /// </summary>
    public class Candidate
    {
        #region Constructor
        /// <summary>
        /// Initializes a new instance of the Candidate class.
        /// </summary>
        public Candidate()
        {
            this.Running = true;
        }
        #endregion

        #region Enum
        /// <summary>
        /// Parties enum.
        /// </summary>
        public enum Parties
        {
            /// <summary>
            /// When two (different) parties have an equal of number of votes in a state.
            /// </summary>
            Undecided,

            /// <summary>
            /// No representative.
            /// </summary>
            None,

            /// <summary>
            /// Democratic party.
            /// </summary>
            Democratic,

            /// <summary>
            /// Republican party.
            /// </summary>
            Republican,

            /// <summary>
            /// Green party.
            /// </summary>
            Green,

            /// <summary>
            /// Libertarian party.
            /// </summary>
            Libertarian,

            /// <summary>
            /// Prohibition party.
            /// </summary>
            Prohibition,

            /// <summary>
            /// Socialist party.
            /// </summary>
            Socialist,

            /// <summary>
            /// Independent party.
            /// </summary>
            Independent,
        }
        #endregion

        #region Public properties
        /// <summary>
        /// Gets or sets the Id.
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Gets or sets the full name.
        /// </summary>
        public string FullName { get; set; }

        /// <summary>
        /// Gets or sets the uri to the image.
        /// </summary>
        public string ImageUri { get; set; }

        /// <summary>
        /// Gets or sets the party the candidate is running for.
        /// </summary>
        public Parties Party { get; set; }

        /// <summary>
        /// Gets or sets their Twitter account name.
        /// </summary>
        public string TwitterAccount { get; set; }

        /// <summary>
        /// Gets or sets their Twitter Id.
        /// </summary>
        public int TwitterId { get; set; }

        /// <summary>
        /// Gets or sets the birthday.
        /// </summary>
        public DateTime Birthday { get; set; }

        /// <summary>
        /// Gets or sets the Wikipedia.
        /// </summary>
        public string Wikipedia { get; set; }

        /// <summary>
        /// Gets or sets the Website.
        /// </summary>
        public string Website { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the candidate is still running for the presidency.
        /// </summary>
        public bool Running { get; set; }
        #endregion
    }
}
